Encapsulation (এনক্যাপসুলেশন) হল একটি অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (OOP) কনসেপ্ট যেখানে ক্লাসের ভেরিয়েবলগুলিকে private ঘোষণা করা হয় এবং তাদের মান নির্ধারণ বা পুনরুদ্ধার করার জন্য getter এবং setter মেথড তৈরি করা হয়। এটি data hiding এর একটি অংশ, যেখানে ক্লাসের অভ্যন্তরীণ ডেটা বাইরে থেকে সরাসরি অ্যাক্সেস করা সম্ভব হয় না। এই পদ্ধতি ডেটাকে সুরক্ষিত এবং নিয়ন্ত্রিত উপায়ে অ্যাক্সেস করতে সাহায্য করে।
Encapsulation এর সুবিধা:
- Data Hiding: ডেটাকে অ্যাক্সেস করার জন্য প্রপার মেথড ব্যবহার করা হয়, তাই বাইরের কোড থেকে সরাসরি ডেটা পরিবর্তন করা যায় না।
- Control Over Data: getter এবং setter মেথড ব্যবহার করে ডেটার মান নিয়ন্ত্রণ করা যায়, যেমন একটি ভেরিয়েবলের মান সেট করার আগে ভ্যালিডেশন চেক করা।
- Easier Maintenance: কোড পরিবর্তন করার সময় বাহ্যিক কোডের উপর প্রভাব পড়বে না।
উদাহরণ: Encapsulation এবং Getter/Setter মেথড
// Class that demonstrates Encapsulation
public class Person {
// Private fields (Data Hiding)
private String name;
private int age;
// Getter method for name
public String getName() {
return name;
}
// Setter method for name
public void setName(String name) {
this.name = name;
}
// Getter method for age
public int getAge() {
return age;
}
// Setter method for age
public void setAge(int age) {
if (age > 0) { // Validation check
this.age = age;
} else {
System.out.println("Age cannot be negative or zero.");
}
}
// Method to display Person's details
public void displayPersonInfo() {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
public class EncapsulationExample {
public static void main(String[] args) {
// Create a Person object
Person person = new Person();
// Using setter methods to set values
person.setName("John Doe");
person.setAge(30);
// Using getter methods to access values
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
// Displaying the Person info using a method
person.displayPersonInfo();
// Invalid age (negative value) - Demonstrates validation in setter
person.setAge(-5); // This will not change the age as it's invalid
}
}
কোডের ব্যাখ্যা:
- Private Fields:
nameএবংageফিল্ডগুলো private হিসেবে ডিক্লেয়ার করা হয়েছে, যা বাইরের কোড থেকে সরাসরি অ্যাক্সেস করা যাবে না। এটি data hiding নিশ্চিত করে। - Getter Methods:
getName()এবংgetAge()মেথডগুলো ব্যবহার করে আমরাnameএবংageফিল্ডের মান পেতে পারি। এই মেথডগুলি public হওয়ায় বাইরের কোড থেকে ডেটা অ্যাক্সেস করা সম্ভব হয়, তবে direct access করা যায় না। - Setter Methods:
setName()এবংsetAge()মেথডগুলো ব্যবহার করেnameএবংageফিল্ডের মান সেট করা যায়।setAge()মেথডে একটি validation চেক রয়েছে, যা নিশ্চিত করে যে বয়স নেতিবাচক বা শূন্য হতে পারে না। - Data Validation:
setAge()মেথডের মধ্যে validation চেক করা হয়েছে, যাতে কোনো অবৈধ মান (যেমন নেতিবাচক বয়স) সেট করা না হয়।
আউটপুট:
Name: John Doe
Age: 30
Name: John Doe
Age: 30
Name: John Doe
Age: 30
Age cannot be negative or zero.
- Encapsulation হল একটি খুবই গুরুত্বপূর্ণ OOP ধারণা, যা ডেটা গোপনীয়তা (data hiding) এবং নিয়ন্ত্রণ (control) নিশ্চিত করতে সাহায্য করে।
- Getter/Setter মেথড ব্যবহার করে আপনি ক্লাসের private ভেরিয়েবলগুলোর মান অ্যাক্সেস এবং সেট করতে পারেন। এই মেথডগুলির মাধ্যমে ডেটার উপর সম্পূর্ণ নিয়ন্ত্রণ পাওয়া যায়, যেমন ডেটা ভ্যালিডেশন।
- এই পদ্ধতি আপনার প্রোগ্রামকে নিরাপদ এবং রক্ষণাবেক্ষণের জন্য সহজ করে তোলে।
Content added By
Read more